/*
 * Copyright (C) 2013～2023 上海颐凡软件科技有限公司
 * Yfann Software Technology (Shanghai) Co.,LTD
 * All Rights Reserved.
 * 公司网址: www.yfann.com
 * 365IT教育网，成就您优秀架构师之梦！
 * 平台网址: www.365itedu.com
 */
package com.yfann.web.base.sys.checker;

import java.util.List;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.ValueStack;
import com.yfann.sword.web.fwk.CheckerUEC;
import com.yfann.sword.web.fwk.checker.RequiredChecker;
import com.yfann.sword.web.fwk.consts.FrameworkConst;
import com.yfann.sword.web.fwk.exception.CheckErrorException;
import com.yfann.sword.web.fwk.message.ApplicationErrorMessage;
import com.yfann.web.base.sys.form.SYS0101S01Form;

/**
 * 登录页面业务处理类。
 * 
 * <pre>
 * 修改履历
 * -----------------------------------------------------------------------------
 *         VERSION       DATE            BY       CHANGE/COMMENT
 * -----------------------------------------------------------------------------
 *          1.0          2013/10/11      颜廷吉            create
 * -----------------------------------------------------------------------------
 * </pre>
 */
public class SYS0101S01Checker implements CheckerUEC<SYS0101S01Form> {

    /**
     * 验证错误容器
     */
    protected List<ApplicationErrorMessage> appErrorMessageList;

    /**
     * FORM容器
     */
    protected SYS0101S01Form sys0101S01Form;

    /**
     * 构造函数。
     */
    @SuppressWarnings("unchecked")
    public SYS0101S01Checker() {
        ActionContext actionContext = ActionContext.getContext();
        ValueStack valueStack = actionContext.getValueStack();
        appErrorMessageList = (List<ApplicationErrorMessage>) valueStack.findValue(FrameworkConst.APP_ERROR_MESSAGE_LIST_KEY);
    }

    /**
     * 单项目验证处理。
     * @param sys0101S01Form sys0101S01Form
     * @param enventMethod String
     * @throws Exception Exception
     */
    @Override
    public void check(SYS0101S01Form sys0101S01Form, String enventMethod) throws Exception {
        boolean hasError = false;
        this.sys0101S01Form = sys0101S01Form;

        // 验证用户Id
        if (checkUserId()) {
            hasError = true;
        }

        // 验证密码
        if (checkPwd()) {
            hasError = true;
        }

        // 验证验证码
        if (checkValidatePwd()) {
            hasError = true;
        }

        if (hasError) {
            throw new CheckErrorException(enventMethod);
        } else {
            checkerUEC(enventMethod);
        }
    }

    /**
     * 验证用户Id处理。
     * @return boolean
     */
    private boolean checkUserId() {

        // 必须输入验证
        if (!RequiredChecker.validate(sys0101S01Form.getUserId())) {
            appErrorMessageList.add(new ApplicationErrorMessage("E_COM_0001", new String[] { "sys0101S01Form_userId" },
                    new String[] { "sys0101S01Form.userId" }));
            return true;
        }

        return false;
    }

    /**
     * 验证密码处理。
     * @return boolean
     */
    private boolean checkPwd() {

        // 必须输入验证
        if (!RequiredChecker.validate(sys0101S01Form.getPwd())) {
            appErrorMessageList.add(new ApplicationErrorMessage("E_COM_0001", new String[] { "sys0101S01Form_pwd" },
                    new String[] { "sys0101S01Form.pwd" }));
            return true;
        }

        return false;
    }

    /**
     * 验证验证码处理。
     * @return boolean
     */
    private boolean checkValidatePwd() {

        // 必须输入验证
        if (!RequiredChecker.validate(sys0101S01Form.getValidateCd())) {
            appErrorMessageList.add(new ApplicationErrorMessage("E_COM_0001", new String[] { "sys0101S01Form_validateCd" },
                    new String[] { "sys0101S01Form.validateCd" }));
            return true;
        }

        return false;
    }

    /**
     * 扩展验证处理。
     * @param enventMethod String
     * @throws Exception Exception
     */
    @Override
    public void checkerUEC(String enventMethod) throws Exception {

    }

}
